package mapReader;


import java.util.ArrayList;
import java.util.List;

import util.Coordinaat;
import util.WindRichting;


public class SpelerManager {
	
	private List<Speler> spelers;

	
	public SpelerManager(String naam){
		setSpelers(new ArrayList<Speler>());
		Speler speler = createSpeler(naam);
		speler.setBeginOrientatie(WindRichting.NOORD);
		speler.setOorsprong(new Coordinaat(0, 0));
	}
	
	public List<Speler> getSpelers(){
		return spelers;
	}
	
	private void setSpelers(List<Speler> spelers){
		this.spelers = spelers;
	}
	

	public Speler createSpeler(String naam){
		if(heeftSpelerMetNaam(naam)){
			throw new NaamNietUniekException();
		}
		
		Speler speler = new Speler(naam);
		addSpeler(speler);
		
		return speler;
	}
	
	private void addSpeler(Speler speler){
		getSpelers().add(speler);
	}
	
	public Speler getSpelerMetNaam(String naam){
		if(naam == null){
			return null;
		}
		
		for(Speler speler : getSpelers()){
			if(speler.getNaam().equals(naam)){
				return speler;
			}
		}	
		throw new SpelerOnbekendException();
	}
	
	public boolean heeftSpelerMetNaam(String naam){
		for(Speler speler : getSpelers()){
			if(speler.getNaam().equals(naam)){
				return true;
			}
		}
		return false;
	}
	
	public Speler getHuidigeSpeler(){
		return getSpelers().get(0);
	}
	
	public int getAantalSpelers(){
		return getSpelers().size();
	}
	
	public List<Speler> getAndereSpelers(){
		return getAndereSpelers(getHuidigeSpeler());
	}
	
	public List<Speler> getAndereSpelers(Speler excluded){
		List<Speler> lijst = new ArrayList<Speler>();
		
		for(Speler speler: getSpelers()){
			if(!speler.equals(excluded)){
				lijst.add(speler);
			}
		}
		return lijst;
	}
	
	
}
